การเพิ่ม Monitoring ของ EC2 Instance ไปยัง CloudWatch Dashboard
ครั้งนี้จะมาแนะนำเกี่ยวกับการเพิ่ม Monitoring ของ EC2 Instance ไปยัง CloudWatch Dashboard
สิ่งที่ต้องมี
ให้สร้าง EC2 Instnace โดยมีการใช้งาน SSM เชื่อมต่อกับ EC2 Instance
ดูตัวอย่างได้ที่บทความด้านล่างนี้
Service | Name |
---|---|
IAM Role | ec2-ssm-managed-instance-core |
EC2 Instance (Amazon Linux 2023 AMI) | tinnakorn-test |
การเตรียม Dashboard ใน CloudWatch
ไปที่ช่องค้นหา พิมพ์ชื่อบริการ CloudWatch
แล้วเลือก CloudWatch
คลิก Dashboards
จากเมนูด้านซ้าย
คลิก Create dashboard
ปุ่มไหนก็ได้
ป้อนชื่อลงใน "Dashboard name" ตามต้องการ เช่น tinnakorn-test
แล้วคลิก Create dashboard
"Add widget" นี้เป็นประเภท Widget ต่างๆที่เราสามารถเพิ่มไปยัง Dashboard ได้
แต่ขั้นตอนนี้เป็นการเตรียม Dashboard จึงยังไม่เพิ่ม Widget ใดๆ ก็ให้คลิก ✕
หรือ Cancel
ก็ได้
เมื่อสร้าง Dashboard เสร็จแล้ว จะแสดงหน้าจอแบบนี้
เราสามารถเพิ่มกราฟจาก Add a first widget ได้
แต่ครั้งนี้ผมจะใช้วิธีที่เข้าใจง่าย โดยให้ดูวิธีการในขั้นตอนถัดไปครับ
การเพิ่ม Monitoring ของ EC2 Instance ไปยัง CloudWatch Dashboard
เข้าไปที่หน้าจอ EC2 Instance ของเรา แล้วเลื่อนลงมาด้านล่าง
แล้วเลือกแท็บ Monitoring
ก็จะเห็น Monitoring ต่างๆ ของ EC2 Instance แสดงอยู่ที่นี่
Monitoring ของ EC2 Instance ที่จะเพิ่มไปยัง CloudWatch Dashboard มีดังนี้
- CPU utilization (%)
- Network in (bytes)
- Network out (bytes)
ก่อนอื่นเราจะทำการเพิ่ม Monitoring ของ CPU utilization (%)
ก่อน
ให้คลิกที่ ⋮
CPU utilization (%) แล้วเลือก View in metrics
ก็จะย้ายไปหน้าจอ Metrics ใน CloudWatch โดยอัตโนมัติ
คลิก Actions
แล้วเลือก Add to dashboard - Improved
ในหน้า Add to dashboard ให้ดูที่ "Select a dashboard" แล้วเลือก Dashboard ที่เราสร้างก่อนหน้านี้ เช่น tinnakorn-test
แล้วคลิก Add to dashboard
แล้วจะแสดง Widget ที่เป็น Monitoring ของ EC2 Instance แบบนี้ จากนั้นให้คลิก Save
(แนะนำให้ Save ทุกครั้งที่มีการเพิ่มหรือแก้ไข)
ต่อไปเราจะเพิ่ม Monitoring ของ Network in (bytes)
และ Network out (bytes)
โดยทำวิธีเดียวกับที่เพิ่ม "CPU utilization (%)" เมื่อสักครู่นี้ครับ
เมื่อเพิ่มเสร็จแล้ว Save ให้เรียบร้อย ก็จะแสดงหน้าจอแบบนี้ครับ
การปรับแต่ง Widget actions
เราสามารถปรับแต่ง Widget actions ได้ตามต้องการง่ายๆ โดยใช้เม้าส์ลากเพื่อย้ายตำแหน่งหรือจะขยาย Widget ตามขนาดที่เราต้องการก็ได้ และถ้าเราปรับแต่งเสร็จเรียบร้อยแล้ว แนะนำให้ Save ทุกครั้งที่มีการปรับแต่ง เพิ่มหรือแก้ไขครับ
ทดสอบการเพิ่มและหยุดการเพิ่มโหลด
เมื่อเราเตรียม EC2 Instnace โดยมีการใช้งาน SSM ที่สามารถเชื่อมต่อกับ EC2 Instance และเพิ่ม Monitoring ไปยัง CloudWatch Dashboard เรียบร้อยแล้ว เราจะมาทดสอบการเพิ่มและหยุดโหลด โดยสังเกตกราฟใน CloudWatch Dashboard ไปด้วยครับ
การเพิ่มโหลด
เข้ามาที่หน้าจอ EC2 Instance ของเรา แล้วคลิก Connect
เลือกแท็บ Session Manager
แล้วคลิก Connect
เมื่อเข้ามาแล้วจะแสดงหน้าจอแบบนี้
รันคำสั่งนี้เพื่อเข้าใช้งานสิทธิ์ root
sudo su -
Output (example) ถ้าแสดงหน้าจอแบบนี้ถือว่าเราสามารถใช้งานสิทธิ์ root ได้แล้ว
Session ID: xxxxxxxxxx Instance ID: i-xxxxxxxxxx
sh-5.2$ sudo su -
[root@ip-xx-xx-xx-xx ~]#
รันคำสั่งนี้เพื่อเพิ่มโหลดให้กับระบบ แล้วรอให้โหลดเพิ่มขึ้นเรื่อยๆ ประมาณ 5 นาที
yes > /dev/null &
ระหว่างรอให้รันคำสั่ง w
เพื่อดูโหลดของระบบประมาณ 2-3 ครั้ง
w
Output (example) จะเห็นว่าโหลดจะเพิ่มขึ้นเรื่อยๆ โดยสังเกตุที่ load average: 0.08 → 0.28 → 0.81
Session ID: xxxxxxxxxx Instance ID: i-xxxxxxxxxx
[root@ip-xx-xx-xx-xx ~]# w
10:55:10 up 5:56, 0 users, load average: 0.08, 0.02, 0.01
USER TTY LOGIN@ IDLE JCPU PCPU WHAT
[root@ip-xx-xx-xx-xx ~]# w
10:55:28 up 5:56, 0 users, load average: 0.28, 0.07, 0.02
USER TTY LOGIN@ IDLE JCPU PCPU WHAT
[root@ip-xx-xx-xx-xx ~]# w
10:56:47 up 5:58, 0 users, load average: 0.81, 0.29, 0.11
USER TTY LOGIN@ IDLE JCPU PCPU WHAT
[root@ip-xx-xx-xx-xx ~]#
เมื่อผ่านไป 5 นาทีแล้วให้รันคำสั่ง w
อีกครั้ง
w
Output (example) จะเห็นว่าโหลดเพิ่มขึ้นสูงมาก โดยสังเกตุที่ load average: 1.00
Session ID: xxxxxxxxxx Instance ID: i-xxxxxxxxxx
[root@ip-xx-xx-xx-xx ~]# w
11:03:11 up 6:04, 0 users, load average: 1.00, 0.81, 0.42
USER TTY LOGIN@ IDLE JCPU PCPU WHAT
[root@ip-xx-xx-xx-xx ~]#
แล้วกลับไปที่หน้าจอ Dashboard ใน CloudWatch ของเรา แล้วดูที่กราฟ "CPU utilization (%)" จะเห็นได้ชัดเจนว่าโหลดกำลังเพิ่มขึ้นเรื่อยๆ อย่างต่อเนื่องครับ
หยุดการเพิ่มโหลด
รันคำสั่ง ps
เพื่อตรวจสอบ Process ที่มีการทำงานอยู่ในระบบ Linux
ps
Output (example) เราจะทำการลบ PID: 11965
ซึ่งเป็นตัว CMD: yes
ที่แสดงอยู่ด้านล่างนี้
Session ID: xxxxxxxxxx Instance ID: i-xxxxxxxxxx
[root@ip-xx-xx-xx-xx ~]# ps
PID TTY TIME CMD
11621 pts/0 00:00:00 sudo
11638 pts/0 00:00:00 su
11639 pts/0 00:00:00 bash
11965 pts/0 00:13:45 yes
12382 pts/0 00:00:00 ps
[root@ip-xx-xx-xx-xx ~]#
รันคำสั่ง [kill
+ ป้อนหมายเลข PID: 11965
] ของแถวที่ 6 ที่แสดงอยู่ด้านบน ตามตัวอย่างด้านล่างนี้ (คำสั่ง kill เป็นคำสั่งยกเลิกการทำงาน Process ที่มีการทำงานอยู่ในระบบ Linux)
kill 11965
แล้วรันคำสั่ง ps
เพื่อตรวจสอบ Process อีกครั้ง
ps
Output (example) จะเห็นว่า PID หายไปแล้ว และตัว CMD: yes
มีสถานะเป็น Terminated เรียบร้อยแล้ว จากนั้นรอให้โหลดลดลงประมาณ 5 นาที
root@ip-xx-xx-xx-xx:~
[root@ip-xx-xx-xx-xx ~]# ps
PID TTY TIME CMD
11621 pts/0 00:00:00 sudo
11638 pts/0 00:00:00 su
11639 pts/0 00:00:00 bash
12446 pts/0 00:00:00 ps
[1]+ Terminated yes > /dev/null
[root@ip-xx-xx-xx-xx ~]#
ระหว่างรอให้รันคำสั่ง w
อีกประมาณ 2-3 ครั้ง
w
Output (example) จะเห็นว่าโหลดจะลดลงเรื่อยๆ โดยสังเกตุที่ load average: 0.26 → 0.20 → 0.09
root@ip-xx-xx-xx-xx:~
[root@ip-xx-xx-xx-xx ~]# w
11:12:03 up 6:13, 0 users, load average: 0.26, 0.74, 0.60
USER TTY LOGIN@ IDLE JCPU PCPU WHAT
[root@ip-xx-xx-xx-xx ~]# w
11:12:18 up 6:13, 0 users, load average: 0.20, 0.70, 0.59
USER TTY LOGIN@ IDLE JCPU PCPU WHAT
[root@ip-xx-xx-xx-xx ~]# w
11:13:04 up 6:14, 0 users, load average: 0.09, 0.60, 0.56
USER TTY LOGIN@ IDLE JCPU PCPU WHAT
[root@ip-xx-xx-xx-xx ~]#
เมื่อผ่านไป 5 นาทีแล้วให้รันคำสั่ง w
อีกครั้ง
w
Output (example) จะเห็นว่าโหลดลดลงมาเป็นสถานะปกติแล้ว โดยสังเกตุที่ load average: 0.01
root@ip-xx-xx-xx-xx:~
[root@ip-xx-xx-xx-xx ~]# w
11:22:14 up 6:23, 0 users, load average: 0.01, 0.11, 0.30
USER TTY LOGIN@ IDLE JCPU PCPU WHAT
[root@ip-xx-xx-xx-xx ~]#
แล้วกลับไปที่หน้าจอ Dashboard ใน CloudWatch ของเรา แล้วดูที่กราฟ "CPU utilization (%)" จะเห็นได้ชัดเจนว่าโหลดลดลงมาเป็นสถานะปกติแล้วครับ
แถมอีกนิด
สำหรับผู้ใช้งานที่ต้องการตั้งค่ารายละเอียดต่างๆ เกี่ยวกับกราฟเพิ่มเติม สามารถเข้าไปตั้งค่าได้ดังนี้
ไปที่หน้าจอ Dashboard ใน CloudWatch ของเรา
คลิก ⋮
ของกราฟที่ต้องการตั้งค่า แล้วเลือก Edit
แล้วจะมี POPUP แสดงขึ้นมาให้ตั้งค่าแบบนี้ เราสามารถตั้งค่าการแสดงผลของกราฟได้ตามต้องการเลย เช่น ชื่อกราฟ, ช่วงเวลาแสดงผล, จุดเวลาที่มีการเปลี่ยนแปลง, รูปแบบการแสดงผล, และตัวเลือกอื่นๆ เป็นต้น
เมื่อตั้งค่าเสร็จแล้วอย่าลืมคลิกปุ่ม Update widget
ด้วยนะครับ
การลบ AWS Resource ที่สร้างขึ้นในบทความนี้
การลบ Resource ใน Service ต่างๆ ถ้าเราไม่รู้ลำดับของการลบ Resource ก็จะทำให้เกิด Error ในขณะลบ หรือไม่สามารถลบได้นั่นเอง เช่น ถ้าทำการลบ Security Group ที่กำลังเชื่อมต่ออยู่กับ EC2 โดยที่ไม่ Terminate EC2 ก่อน ก็จะไม่สามารถลบ Security Group ได้ เป็นต้น ดังนั้นแนะนำให้ลบตามขั้นตอนที่ผมเรียงไว้ได้เลยครับ
การลบ Resource ที่ได้สร้างขึ้นใน Service ต่างๆ
ลบเรียงตามขั้นตอนดังนี้:
- Amazon EC2
- Instances
- Security Groups
- AWS Identity and Access Management (IAM)
- Roles
- Amazon CloudWatch
- Dashboards
การลบ Resource ใน Amazon EC2
การ Terminate Instance, ลบ Key pairs และ Security Groups
ดูตัวอย่างการลบได้ที่ลิงก์ด้านล่างนี้
การลบ Resource ใน AWS Identity and Access Management (IAM)
การลบ Roles
เข้าไปที่ Service IAM > Roles ค้นหาและเลือกตัวที่ต้องการลบ คลิก Delete แล้วยืนยันการลบตามคำแนะนำ
การลบ Resource ใน Amazon CloudWatch
การลบ Dashboards
เข้าไปที่ Service CloudWatch > Dashboards เลือกตัวที่ต้องการลบโดยติ๊ก ✅
ชื่อ Dashboard ของเรา แล้วคลิก Delete
แล้วยืนยันการลบตามคำแนะนำ
สรุป
เราสามารถตรวจสอบ Monitoring ของระบบ EC2 Instance ในตัวได้ปกติ แต่การสาธิตของทั้งหมดนี้เป็นการแนะนำการเพิ่ม Monitoring ไปยัง CloudWatch Dashboard เพื่อให้การใช้งาน Monitoring มีความสะดวกมากขึ้น เพราะเราสามารถเลือก Monitoring ตัวที่เราต้องการได้ครับ
ผมหวังว่าบทความนี้จะเป็นประโยชน์ให้กับผู้อ่านได้นะครับ